package com.cyzy.homework.service;

import com.cyzy.homework.entity.Message;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 消息服务接口
 */
public interface MessageService {
    
    /**
     * 发送消息
     */
    Message sendMessage(String fromUserId, String fromUser, String toUserId, 
                       String title, String content, String type, String level, String extraData);
    
    /**
     * 发送系统消息
     */
    Message sendSystemMessage(String toUserId, String title, String content, String level);
    
    /**
     * 发送欢迎消息
     */
    Message sendWelcomeMessage(String toUserId, String userName, String userRole);
    
    /**
     * 批量发送消息
     */
    List<Message> sendBatchMessages(String fromUserId, String fromUser, List<String> toUserIds,
                                   String title, String content, String type, String level, String extraData);
    
    /**
     * 获取用户消息列表（分页）
     */
    Page<Message> getUserMessages(String userId, int page, int size);
    
    /**
     * 根据类型获取用户消息列表
     */
    Page<Message> getUserMessagesByType(String userId, String type, int page, int size);
    
    /**
     * 获取用户未读消息列表
     */
    Page<Message> getUserUnreadMessages(String userId, int page, int size);
    
    /**
     * 获取用户最近消息
     */
    List<Message> getRecentMessages(String userId, int limit);
    
    /**
     * 根据消息ID获取消息详情
     */
    Message getMessageById(String messageId, String userId);
    
    /**
     * 标记消息为已读
     */
    boolean markAsRead(String messageId, String userId);
    
    /**
     * 批量标记消息为已读
     */
    int markAllAsRead(String userId);
    
    /**
     * 删除消息
     */
    boolean deleteMessage(String messageId, String userId);
    
    /**
     * 获取未读消息数量
     */
    long getUnreadCount(String userId);
    
    /**
     * 根据类型获取未读消息数量
     */
    long getUnreadCountByType(String userId, String type);
    
    /**
     * 清理过期消息
     */
    int cleanupExpiredMessages(int daysToKeep);
}





















